9896. Средняя цена

 

Вы отсканировали цены на несколько продуктов для продажи. Теперь Вы хотите определить среднюю цену товара. К сожалению, Вы были неаккуратны, и, возможно, отсканировали некоторые продукты более одного раза. Тем не менее, Вы знаете, что каждый продукт был отсканирован хотя бы один раз, и что ни у одного из двух продуктов нет одинаковой цены. Найти среднюю цену товара.

 

Вход. Первая строка содержит количество цен n (n ≤ 50). Следующая строка содержит n натуральных чисел (не больших 10000) – отсканированные цены.

 

Выход. Выведите среднюю цену товара с 4 десятичными знаками.

 

Пример входа

Пример выхода

3

5 7 5

6.0000

 

 

РЕШЕНИЕ

структуры данных – set

 

Анализ алгоритмав

Занесем все отсканированные цены товаров во множество s. Таким образом будут уничтожены дубликаты. Число элементов множества равно количеству продуктов в наличии. Средняя цена товара вычисляется как частное суммы стоимостей всех товаров и их количества s.size().

 

Пример

В приведенном примере отсканировали ценники двух товаров стоимостью 5 и 7 (товар с ценой 5 был отсканирован дважды).

Средняя цена товаров равна (5 + 7) / 5 = 6.

 

Реализация алгоритма

Читаем входные значения. Все цены заносим во множество s.

 

scanf("%d", &n);

for (i = 0; i < n; i++)

{

  scanf("%d", &x);

  s.insert(x);

}

 

Находим сумму sum всех чисел во множестве – стоимость всех продуктов.

 

sum = 0;

for (iter = s.begin(); iter != s.end(); iter++)

  sum += *iter;

 

Вычисляем и выводим среднюю цену товара. Для этого общую стоимость sum следует поделить на количество продуктов s.size(). Результатом деления должно получиться действительное число.

 

printf("%.4lf\n", 1.0 * sum / s.size());